package com.other.blockingQueue;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;

public class Demo1 {
    public static void main(String[] args) {
        /**
         * 它在传统队列的基础上，新增了**“阻塞”功能**：
         * 阻塞插入：队列满时，阻塞直到有空间；
         * 阻塞获取：队列空时，阻塞直到有元素。
         */
        BlockingQueue<Integer> queue = new ArrayBlockingQueue<>(5);

        /**
         * 生产者线程
         */
        new Thread(() -> {
            try {
                for (int i = 0; i < 10; i++) {
                    queue.put(i);
                    System.out.println("生产：" + i);
                }
            } catch (InterruptedException e) {
                Thread.currentThread().interrupt();
            }
        }).start();

        /**
         * 消费者线程
         */
        new Thread(() -> {
            try {
                while (true) {
                    int item = queue.take();
                    System.out.println("消费：" + item);
                    Thread.sleep(100); // 模拟处理时间
                }
            } catch (InterruptedException e) {
                Thread.currentThread().interrupt();
            }
        }).start();
    }
}
